<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <span>
        1. 什么是函数：

        函数就是封装了一段可以重复执行的代码，对外暴露一个函数名，隐藏了内部的函数细节。
        2.某个人做了某件事，某件事就是函数
        3. function 关键字
        4.调用： 函数名调用一次 执行一次
        5.先声明 再使用


        语法结构
        function 函数名 () {
        函数体;
        }
        调用 :
        函数名();

    </span>


    <p>
        什么是构造函数：

        构造函数和类是一码事 根据对象的属性和方法创建一个对象 动态地添加属性和方法 并返回这个对象
        new 关键字
        大驼峰命名
        对事物属性和方法的公共特性的抽取
        this 当前对象
    </p>

        <h1>
            什么是对象：

            1.对象是一个具体的事物  类是抽象的 （可以理解为图纸）
            2.* 是一种存储数据的格式，相对于数组 结构更加清晰
            3.对象是属性的无序集合
            4.属性就是变量 方法就是函数 函数名用动词
            5.通过类 生成一个对象的过程叫实例 对象也称为实例
            6.* 之前声明的变量和函数,默认对象是windows
            7* 对象里面都是键值对
            8.方法后面，是一个匿名函数
        
        </h1>

    <h2>
        new 的执行过程：

        1.后面跟的是（），调用了构造函数
        2.*创建了一个对象
        3. 给当前对象动态地添加属性和方法
        4.返回这个对象
    </h2>
    <script>
     // 函数   
        function buy() {
            if (age > 18) {
                console.log('给你的啤酒');
            } else {
                console.log('请喝可乐');
            }
        }

        buy();
        buy();




        // 构造函数：
        function Hero(name, age, sex, level) {
            this.name = name;
            this.age = age;
            this.sex = sex;
            this.level = level;

            // console.log(123);
            this.sing = function (address) {
                console.log("来" + address + "开演唱会");
            }

            // console.log(this);
        }

        // 通过构造函数，创建一个对象
        let lvbu = new Hero("吕布", 22, true, 18);
        let zf = new Hero("张飞", 18, true, 22);
        console.log(typeof lvbu);
        console.log(lvbu.name);
        lvbu.sing("郑州");





    </script>
</body>

</html>